package model;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

// 通过这个类, 封装数据库建立连接的操作
public class DBUtil {
     private volatile static DataSource dataSource = null;

     private static DataSource getDataSource(){
         if(dataSource == null)
         {
             synchronized (DBUtil.class){
                 if(dataSource == null)
                 {
                     dataSource = new MysqlDataSource();
                     ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/blog_system?characterEncoding=utf8&useSSL=false");
                     ((MysqlDataSource) dataSource).setUser("root");
                     ((MysqlDataSource) dataSource).setPassword("mysql");
                 }
             }
         }
         return dataSource;
     }

     public static Connection getConnection() throws SQLException {
         return getDataSource().getConnection();
     }

     public static void close(Connection connection, PreparedStatement statement, ResultSet resultSet) {
         if(resultSet != null){
             try {
                 resultSet.close();
             } catch (SQLException e) {
                 throw new RuntimeException(e);
             }
         }

         if(statement != null)
         {
             try {
                 statement.close();
             } catch (SQLException e) {
                 throw new RuntimeException(e);
             }
         }

         if(connection != null)
         {
             try {
                 connection.close();
             } catch (SQLException e) {
                 throw new RuntimeException(e);
             }
         }
     }
}
